МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №1
з навчальної дисципліни:
«Мікропроцесори в системах ТЗІ»
на тему:
“Знайомство з інтегрованим середовищем розробки
AVR Studio та програмою симуляції Proteus.
Написання та відладка простих програм для AVR-
мікроконтролерів”
Варіант №1
Львів – 2012
Мета роботи: ознайомитись з послідовністю створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR у програмах AVR Studio та Proteus 7.
Текст завдання
1. Створити проект в AVR Studio, ввести свою програму, провести її асемблювання.
2. В режимі покрокової відладки переконатися в правильності роботи програми, перевірити дотримання заданих в завданні часових параметрів.
3. Відкрити файл LR_1.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл.
4. Запустити режим симуляції схеми та перевірити правильність функціонування охоронної системи у всіх режимах роботи. У випадку виявлення відхилень в роботі внести потрібні виправлення.
Лістинг програми
.include "2313def.inc" ; підключаємо заголовочний файл;
;Робочий регістр
.def temp = r16
; регістри затримки
.def Delay1 = r17
.def Delay2 = r18
.def Delay3 = r19
;////////////////////////////////////////////////////////////////////////////////////
.equ SHLEIF_NO1 = PB3 ; Вивід для підключення Normal Open шлейфу (НРЗ)
.equ SHLEIF_NO2 = PB5 ; Вивід для підключення Normal Open шлейфу(НРЗ)
.equ SHLEIF_NC1 = PD2 ; Вивід для підключення Normal Closed шлейфу(НЗМ)
.equ SHLEIF_NC2 = PD4 ; Вивід для підключення Normal Closed шлейфу (НЗМ)
.equ LED = PB1 ; Вивід для підключення світлодіоду
.equ SWITCH = PD0 ; Вивід для підключення секретної кнопки
;////////////////////////////////////////////////////////////////////////////////////
; Розрахунок часових затримок
.equ FCLK = 4000000 ; Тактова частота МК
.equ N_Alarm = (FCLK*(3.2) - 15)/5 ; Затримка 3.2 секунди
.equ N_Blick = (FCLK/15 - 15)/5 ; Частота мигання 15 Гц
;////////////////////////////////////////////////////////////////////////////////////
; Сегмент коду
.cseg
; Початкова адреса
.org 0
ldi temp, 0xDF ; Ініціалізація
out SPL, temp ; стеку
rcall Pin_Init ; Налаштування виводів МК
No_Work: ; Режим очікування
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Виділити розряд РВЗ
brne No_Work ; Якщо не натиснута, то перейти на No_Work
; Почекати час необхідний для виходу з об'єкту
Loop:
ldi Delay1, low(N_Alarm)
ldi Delay2, high(N_Alarm)
ldi Delay3, byte3(N_Alarm)
rcall Delay ;Виклик п/п часової затримки
; Режим охорони
cbi PORTB, LED ;Включити світлодіод сигналізації
; Перейти в режим сканування охоронних шлейфів
Start:
in temp, PINB ; прочитати стан шлейфу 0
andi temp, (1<<SHLEIF_NO1) ; Виділити розряд РВ3
brne Next_1 ; Якщо немає спрацювання, перейти на Next_1
rjmp Work ; Якщо є спрацювання, перейти на Work
Next_1:
in temp, PINB ; прочитати стан шлейфу 1
andi temp, (1<<SHLEIF_NO2) ; Виділити розряд РВ5
brne Next_2 ; Якщо немає спрацювання, перейти на Next_2
rjmp Work ; Якщо є спрацювання, перейти на Work
Next_2:
in temp, PIND ; прочитати стан шлейфу 3
andi temp, (1<< SHLEIF_NC1) ; Виділити розряд PD2
brne Work ; Якщо є спрацювання, перейти на Work
in temp, PIND ; прочитати стан шлейфу 4
andi temp, (1<< SHLEIF_NC2) ; Виділити розряд PD4
brne Work ; Якщо є спрацювання, перейти на Work
; Якщо шлейфи не активні:
in temp, PIND ; Прочитати стан секретної кнопки
andi temp, (1<<SWITCH) ; Кнопка натиснута?
breq Next_3 ; якщо так то перейти на Next_3
sbi PORTB, LED ; Включити світлодіод сигналізації
rjmp No_Work ; Перейти в режим очікування
Next_3:
rjmp Start ; Повторити цикл опитування
; Почекати час необхідний для відключення сигналізації
Work:
...